/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Persistencia;

import cprincipal.DIADcompacta;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

public class AmbulanciaCompactaXmlDiad
{
    private Element root;
    private String fileLocation = "src/Archivos/diadCompacta.xml";

    public AmbulanciaCompactaXmlDiad()
    {
        try
        {
            SAXBuilder builder = new SAXBuilder(false);
            Document doc = null;
            doc = builder.build(fileLocation);
            root = doc.getRootElement();
        }
        catch (JDOMException ex)
        {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        }
        catch (IOException ex)
        {
            System.out.println("No se pudo iniciar la operacion por: " + ex.getMessage());
        }
    }

    private Element AmbulanciaCompactaDiadtoXmlElement(DIADcompacta nComp)
    {
        Element ambulanciasTRA = new Element("compacta");

        Element placa = new Element("placa");
        placa.setText(Integer.toString(nComp.getPlaca()));
        Element  suero = new Element ("suero");
         suero.setText(Integer.toString(nComp.getSuero()));
         Element inyectadora = new Element("inyectadora");
        inyectadora.setText(Integer.toString(nComp.getInyectadora()));
        Element  aguja = new Element ("aguja");
          aguja.setText(Integer.toString(nComp.getAguja()));
        Element  carretehilar = new Element ("carretehilar");
         carretehilar.setText(Integer.toString(nComp.getCarretehilar()));
        Element  guante = new Element ("guante");
         guante.setText(Integer.toString(nComp.getGuante()));
          Element alcohol = new Element("alcohol");
        alcohol.setText(Integer.toString(nComp.getAlcohol()));
         Element gasa = new Element("gasa");
        gasa.setText(Integer.toString(nComp.getGasa()));




        ambulanciasTRA.addContent(placa);
        ambulanciasTRA.addContent(suero);
        ambulanciasTRA.addContent(inyectadora);
        ambulanciasTRA.addContent(aguja);
        ambulanciasTRA.addContent(carretehilar);
        ambulanciasTRA.addContent(guante);
        ambulanciasTRA.addContent(alcohol);
        ambulanciasTRA.addContent(gasa);
        return ambulanciasTRA;
    }

      private DIADcompacta DIAdcompactaToObject(Element element) throws ParseException
      {
      DIADcompacta nComp = new DIADcompacta ();

                 nComp.setPlaca(Integer.parseInt(element.getChildText("placa")));
                 nComp.setSuero(Integer.parseInt(element.getChildText("suero")));
                 nComp.setInyectadora(Integer.parseInt(element.getChildText("inyectadora")));
                 nComp.setAguja(Integer.parseInt(element.getChildText("aguja")));
                 nComp.setCarretehilar(Integer.parseInt(element.getChildText("carretehilar")));
                 nComp.setGuante(Integer.parseInt(element.getChildText("guante")));
                 nComp.setAlcohol(Integer.parseInt(element.getChildText("alcohol")));
                 nComp.setGasa(Integer.parseInt(element.getChildText("gasa")));


        return nComp;
    }

         public static Element buscar(List raiz, String dato) {
        Iterator i = raiz.iterator();
        while (i.hasNext()) {
            Element e = (Element) i.next();
            if (dato.equals(e.getChild("placa").getText())) {
                return e;
            }
        }
        return null;
    }


    private boolean updateDocument() {
        try {
            XMLOutputter out = new XMLOutputter(org.jdom.output.Format.getPrettyFormat());
            FileOutputStream file = new FileOutputStream(fileLocation);
            out.output(root, file);
            file.flush();
            file.close();
            return true;
        } catch (Exception e) {
            System.out.println("error: " + e.getMessage());
            return false;
        }
    }

    public boolean agregarDIADcompacta(DIADcompacta nComp) {
        boolean resultado = false;
        root.addContent(AmbulanciaCompactaDiadtoXmlElement(nComp));
        resultado = updateDocument();
        return resultado;
    }



 public DIADcompacta buscarDIADcompacta(Integer dato) {
        Element aux = new Element("compacta");
        List DIAD = this.root.getChildren("compacta");

        while (aux != null) {
            aux = AmbulanciaCompactaXmlDiad.buscar(DIAD,  Integer.toString(dato));
            if (aux != null) {
                try {
                    return DIAdcompactaToObject(aux);
                } catch (ParseException ex) {
                    System.out.println(ex.getMessage());
                }
            }
        }
        return null;
    }

  public boolean actualizarDIADcompacta(DIADcompacta nComp) {
        boolean resultado = false;
        Element aux = new Element("compacta");
        List DIAD = this.root.getChildren("compacta");
        while (aux != null) {
            aux = AmbulanciaCompactaXmlDiad.buscar(DIAD, Integer.toString(nComp.getPlaca()));
            if (aux != null) {
                DIAD.remove(aux);
                resultado = updateDocument();
            }
        }
        agregarDIADcompacta(nComp);
        return resultado;
    }

   public boolean borrarDIADcompacta(Integer dato) {
        boolean resultado = false;
        Element aux = new Element("compacta");
        List DIAD = this.root.getChildren("compacta");
        while (aux != null) {
            aux = AmbulanciaCompactaXmlDiad.buscar(DIAD, String.valueOf(dato));
            if (aux != null) {
                DIAD.remove(aux);
                resultado = updateDocument();
            }
        }
        return resultado;
    }


     public ArrayList<DIADcompacta> todasLosDIAD() {
        ArrayList<DIADcompacta> resultado = new ArrayList<DIADcompacta>();
        for (Object it : root.getChildren()) {
            Element xmlElem = (Element) it;
            try {
                resultado.add(DIAdcompactaToObject(xmlElem));
            } catch (ParseException ex) {
                System.out.println(ex.getMessage());
            }
        }
        return resultado;
    }
}


